package com.example.demo.controller;

import com.example.demo.controller.data.ReturnData;
import com.example.demo.controller.vo.RegisterVo;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 用户相关的接口控制类
 */
@RestController
public class UserController {

    @Resource
    UserService userService;

    // 获取用户
    @GetMapping("/getUserAll")
    public List<User> getUserAll() {
        return userService.findAll();
    }

    // 根据token用户名获取用户
    @GetMapping("/getUser")
    ReturnData getUser(HttpServletRequest request) {
        // 获取[token] 的时候是使用 [用户名+密码]登录
        String token = request.getHeader("token");
        return userService.getUser(token);
    }

    // 验证用户
    @PostMapping("/equalsUser")
    ReturnData equalsUser(String username) {
        return userService.equalsUser(username);
    }

    // 登录用户
    @PostMapping("/login")
    ReturnData login(@RequestBody RegisterVo user) {
        return userService.login(user.getUsername(),user.getPassword());
    }

    // 注册用户
    @PostMapping("/register")
    ReturnData register(@RequestBody RegisterVo user) {
        return userService.register(user);
    }

    // 发送验证码
    @PostMapping("/getCode")
    ReturnData getCode(String email) throws InterruptedException {
        return userService.getCode(email);
    }

    // 更新用户信息
    @PostMapping("/updateUserInfo")
    ReturnData updateUserInfo(@RequestBody RegisterVo user , HttpServletRequest request) {
        // 获取[token] 的时候是使用 [用户名+密码]登录
        String token = request.getHeader("token");
        return userService.updateUserInfo(user,token);
    }

    // 删除用户
    @GetMapping("/delUser")
    ReturnData delUser(HttpServletRequest request) {
        // 获取[token] 的时候是使用 [用户名+密码]登录
        String token = request.getHeader("token");
        return userService.delUser(token);
    }

}
